home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / STRINGS.SWG / 0067_TRANSLAT Upper-Lower Case.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-26  |  894b  |  47 lines

  1. {
  2. I am in need of a very fast LCASE or UCASE routine.
  3. A general translation utility could come in handy:
  4. }
  5.  
  6. USES CRT;
  7.  
  8. type
  9.   t_table=array [char] of char;
  10.  
  11. procedure translate(var buffer; var table:t_table; len:word);
  12. assembler;
  13. asm
  14.   mov     cx,[len]
  15.   JCXZ    @@end
  16.   les     bx,[table]
  17.   push    ds
  18.   cld
  19.   lds     si,[buffer]
  20. @@redo:
  21.   lodsb
  22.   seges
  23.   xlat
  24.   mov     [si-1],al
  25.   LOOP    @@redo
  26.   pop     ds
  27. @@end:
  28.   end;
  29.  
  30. var
  31.   uptable : t_table;
  32.   lotable : t_table;
  33.   s: string;
  34.   c: char;
  35. begin
  36.   ClrScr;
  37.   (* convert every letter to its uppercase pendant *)
  38.   for c:=#0 to #255 do  uptable[c]:=upcase(c);
  39.   (* convert every letter to its lowercase pendant *)
  40.   for c:=#0 to #255 do  lotable[c]:= CHR(ORD(c) OR $20);
  41.   readln(s);
  42.   translate(s[1],uptable,length(s));
  43.   writeln(s);
  44.   translate(s[1],lotable,length(s));
  45.   writeln(s);
  46.   end.
  47.